﻿#pragma once

#include <string>

#include <fast_io/fast_io.h>
#include <fast_io/fast_io_dsal/vector.h>
#include <fast_io/fast_io_freestanding.h>

struct SkinData {
public:
	uint8_t pad_0x0000[0x4]{};  // 0x0000
	unsigned int SkinWidth{};   // 0x0004
	unsigned int SkinHeight{};  // 0x0008
	uint8_t pad_0x000C[0x4]{};  // 0x000C
	void* skinData{};           // 0x0010
	size_t skinSize{};          // 0x0018
};

namespace MeshStructs {
struct face {
	struct facePart {
		int vertIndex = -1, normalIndex = -1, uvIndex = -1;
	} indices[8]{};
	int facesPresent = 4;
};

/*
using namespace nlohmann;
class json;
void to_json(json& j, const face& f);*/

struct meshData {
	fast_io::vector<std::array<float, 3>> vertices{};
	fast_io::vector<std::array<float, 3>> normals{};
	fast_io::vector<std::array<float, 2>> uvs{};
	fast_io::vector<face> faces{};
};
}  // namespace MeshStructs
